#if !defined(SM__SWAGME_H)
#define SM__SWAGME_H

#include <iostream>
#include <stdlib.h>
#include "SDL.h"
#include "SDL_image.h"

#define SCREEN_SIZE_X (800)
#define SCREEN_SIZE_Y (600)
// game dimensions in pixels, must match graphics resources to make sense
// the map is where the game play happens
// multiples of 32...
#define MAP_SIZE_X (576)
#define MAP_SIZE_Y (576)
#define MAP_POS_X (12)
#define MAP_POS_Y (12)
// sprite dimensions are constant for all sprites
#define SPRITE_SIZE_X (32)
#define SPRITE_SIZE_Y (32)
// this is the player and npc's bounding box size
#define PLAYER_WIDTH (12)
#define PLAYER_HEIGHT (12)
// define boundaries for player movement
// jms: player movement is zero-based (you can revert this if you want)
#define PLAYER_POS_MIN_X (0)
#define PLAYER_POS_MAX_X (MAP_SIZE_X - PLAYER_WIDTH)
#define PLAYER_POS_MIN_Y (0)
#define PLAYER_POS_MAX_Y (MAP_SIZE_Y - PLAYER_HEIGHT)
// the status area has score & player info
#define STATUS_SIZE_X (200)
#define STATUS_SIZE_Y (600)
#define STATUS_POS_X (600)
#define STATUS_POS_Y (0)
// Bling marker is 11 pixels wide (and 12 pixels tall)
#define BLINGMARKER_SIZE_X 11
#define BLINGMARKER_SIZE_y 12
#define BLINGMARKER_POS_X (STATUS_POS_X + STATUS_SIZE_X/2 + 5 - (BLINGMARKER_SIZE_X+1)/2)
#define BLINGMARKER_POS_Y (STATUS_POS_Y + 130)
// TODO: fix this
#define BLINGGAUGE_SIZE_X 140
using namespace std;

// clockwise, starting at up or north
enum sm_direction {
  sm_dir_none = 0,
  sm_dir_up = 1,
  sm_dir_right = 2,
  sm_dir_down = 3,
  sm_dir_left = 4,
};
#define MIN_DIR 1
#define MAX_DIR 4

enum sm_cdr_result {
  sm_cdr_success = 0,
  sm_cdr_failure = 1,
  sm_cdr_partial_move = 2,
  sm_cdr_cannot_move = 3
};

// for cdr and colmap
enum sm_cd_object { 
  sm_cdo_nothing = 0,
  sm_cdo_edge = 1,
  sm_cdo_wall = 2,
  sm_cdo_swag = 3,
  sm_cdo_player = 4,
  sm_cdo_babe = 5,
  sm_cdo_nerd = 6
};

// enum of all swag types
enum sm_swag_type {
  sm_swag_pen = 1,
  sm_swag_hat = 2,
  sm_swag_yoyo = 3,
  sm_swag_tshirt = 4,
  sm_swag_mug = 5,
};
#define MIN_SWAG_TYPE 1
#define MAX_SWAG_TYPE 5

// returns a random number in the inclusive range (min, max)
int random(int min, int max);

void quit(void);
#endif // SM__SWAGME_H
